﻿#include "qKontenPlan.h"

#include "qizvodvnes.h"
#include "qizvodlista.h"
#include "qizvodkorekcija.h"
#include "qFinNalVnes.h"
#include "qFinNalKorekcija.h"

QMyKontenPlan::QMyKontenPlan(QWidget *parent)
	: QMyBaseWidget(parent)
	,KontenPlanVnes(0)
	,KontenPlanKorekcija(0)
	,KontenPlanLista(0)
{
	ui.setupUi(this);
	pressF4();
}

QMyKontenPlan::~QMyKontenPlan()
{

}

void QMyKontenPlan::pressF2()
{
	closeAllForm();
	KontenPlanVnes = showMyWidget<QKontenPlanVnes>(KontenPlanVnes); 
	connect(KontenPlanVnes,SIGNAL(succesfulEntryData()),this,SLOT(succesfulEntryData()));
	connect(KontenPlanVnes,SIGNAL(closeW()),this,SLOT(closeW()));
}
void QMyKontenPlan::pressF3()
{
	QString selText = KontenPlanLista ? KontenPlanLista->getSelectedText() : "";
	if (selText.isEmpty())
	{
		return;
	}
	closeAllForm();
	KontenPlanKorekcija = showMyWidget<QKontenPlanKorekcija>(KontenPlanKorekcija); 
	connect(KontenPlanKorekcija,SIGNAL(succesfulEntryData()),this,SLOT(succesfulEntryData()));
	connect(KontenPlanKorekcija,SIGNAL(closeW()),this,SLOT(closeW()));
	KontenPlanKorekcija->showData(selText);
}
void QMyKontenPlan::pressF4()
{
	closeAllForm();
	KontenPlanLista = showMyWidget<QKontenPlanLista>(KontenPlanLista);
	connect(KontenPlanLista,SIGNAL(sKomintentToPriemnica(QString&, QString&)),this,SLOT(retKomintentToPriemnica(QString&, QString&)), Qt::DirectConnection);
    connect(KontenPlanLista,SIGNAL(sKontenPlanToIzvod(QString&, QString&)),this,SLOT(retKontenPlanToIzvod(QString&,QString&)));
	connect(KontenPlanLista,SIGNAL(closeW()),this,SLOT(closeWLista()));
	connect(KontenPlanLista,SIGNAL(procF2()),this,SLOT(procF2()));
	connect(KontenPlanLista,SIGNAL(procF3()),this,SLOT(procF3()));
}

void QMyKontenPlan::procF2()
{
	pressF2();
}
void QMyKontenPlan::procF3()
{
	pressF3();
}

void QMyKontenPlan::closeW()
{
	pressF4();
}
void QMyKontenPlan::closeWLista()
{
	pressEscape();
}

void QMyKontenPlan::pressEscape()
{
	raise();
	setFocus();
	emit signCloseMyWidget();
}

void QMyKontenPlan::refresh()
{
}

void QMyKontenPlan::closeAllForm()
{
	KontenPlanKorekcija = deleteMyWidget<QKontenPlanKorekcija>(KontenPlanKorekcija);
	KontenPlanVnes = deleteMyWidget<QKontenPlanVnes>(KontenPlanVnes);
	KontenPlanLista = deleteMyWidget<QKontenPlanLista>(KontenPlanLista);
}

void QMyKontenPlan::succesfulEntryData()
{
	pressF4();
}

void QMyKontenPlan::retKontenPlanToIzvod(QString& text, QString& textName)
{
	QWidget *sour = getSourceWidget();
	if (qobject_cast<QIzvodLista*>(sour))
	{
		QIzvodLista *dest = qobject_cast<QIzvodLista*>(sour);
		dest->setZiroSmetka(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine();
	}
	if (qobject_cast<QIzvodVnes*>(sour))
	{
		QIzvodVnes *dest = qobject_cast<QIzvodVnes*>(sour);
		dest->setZiroSmetka(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine();
	}
    if (qobject_cast<QIzvodKorekcija*>(sour))
    {
        QIzvodKorekcija *dest = qobject_cast<QIzvodKorekcija*>(sour);
        dest->setZiroSmetka(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
        dest->setFocusLine();
    }
	if (qobject_cast<QFinNalVnes*>(sour))
	{
		QFinNalVnes *dest = qobject_cast<QFinNalVnes*>(sour);
		dest->setKontoSmetka(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine();
	}
    if (qobject_cast<QFinNalKorekcija*>(sour))
    {
        QFinNalKorekcija *dest = qobject_cast<QFinNalKorekcija*>(sour);
        dest->setKontoSmetka(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
        dest->setFocusLine();
    }
}

QStandardItemModel* QMyKontenPlan::getModel()
{
    QStandardItemModel * modelExt;
    if (KontenPlanLista)
    {
        modelExt = KontenPlanLista->model;
    } 
    else
    {
        modelExt = NULL;
    }
    return modelExt;
}

void QMyKontenPlan::setInitSearchText(QString text)
{
    if (KontenPlanLista)
    {
        KontenPlanLista->setInitText(text);
    } 
}